﻿/**
* jQuery EasyUI 1.2.5
* 
* Licensed under the GPL terms
* To use it on other terms please contact us
*
* Copyright(c) 2009-2011 stworthy [ stworthy@gmail.com ] 
* 
*/
(function ($) {
    function _1(_2) {
        $(_2).appendTo("body");
        $(_2).addClass("menu-top");
        var _3 = [];
        _4($(_2));
        var _5 = null;
        for (var i = 0; i < _3.length; i++) {
            var _6 = _3[i];
            _7(_6);
            _6.children("div.menu-item").each(function () {
                _10(_2, $(this));
            });
            _6.bind("mouseenter", function () {
                if (_5) {
                    clearTimeout(_5);
                    _5 = null;
                }
            }).bind("mouseleave", function () {
                _5 = setTimeout(function () {
                    _19(_2);
                }, 100);
            });
        }
        function _4(_8) {
            _3.push(_8);
            _8.find(">div").each(function () {
                var _9 = $(this);
                var _a = _9.find(">div");
                if (_a.length) {
                    _a.insertAfter(_2);
                    _9[0].submenu = _a;
                    _4(_a);
                }
            });
        };
        function _7(_b) {
            _b.addClass("menu").find(">div").each(function () {
                var _c = $(this);
                if (_c.hasClass("menu-sep")) {
                    _c.html("&nbsp;");
                } else {
                    var _d = _c.addClass("menu-item").html();
                    _c.empty().append($("<div class=\"menu-text\"></div>").html(_d));
                    var _e = _c.attr("iconCls") || _c.attr("icon");
                    if (_e) {
                        $("<div class=\"menu-icon\"></div>").addClass(_e).appendTo(_c);
                    }
                    if (_c[0].submenu) {
                        $("<div class=\"menu-rightarrow\"></div>").appendTo(_c);
                    }
                    if ($.boxModel == true) {
                        var _f = _c.height();
                        _c.height(_f - (_c.outerHeight() - _c.height()));
                    }
                }
            });
            _b.hide();
        };
    };
    function _10(_11, _12) {
        _12.unbind(".menu");
        _12.bind("mousedown.menu", function () {
            return false;
        }).bind("click.menu", function () {
            if ($(this).hasClass("menu-item-disabled")) {
                return;
            }
            if (!this.submenu) {
                _19(_11);
                var _13 = $(this).attr("href");
                if (_13) {
                    location.href = _13;
                }
            }
            var _14 = $(_11).menu("getItem", this);
            $.data(_11, "menu").options.onClick.call(_11, _14);
        }).bind("mouseenter.menu", function (e) {
            _12.siblings().each(function () {
                if (this.submenu) {
                    _18(this.submenu);
                }
                $(this).removeClass("menu-active");
            });
            _12.addClass("menu-active");
            if ($(this).hasClass("menu-item-disabled")) {
                _12.addClass("menu-active-disabled");
                return;
            }
            var _15 = _12[0].submenu;
            if (_15) {
                var _16 = _12.offset().left + _12.outerWidth() - 2;
                if (_16 + _15.outerWidth() + 5 > $(window).width() + $(document).scrollLeft()) {
                    _16 = _12.offset().left - _15.outerWidth() + 2;
                }
                var top = _12.offset().top - 3;
                if (top + _15.outerHeight() > $(window).height() + $(document).scrollTop()) {
                    top = $(window).height() + $(document).scrollTop() - _15.outerHeight() - 5;
                }
                _1f(_15, { left: _16, top: top });
            }
        }).bind("mouseleave.menu", function (e) {
            _12.removeClass("menu-active menu-active-disabled");
            var _17 = _12[0].submenu;
            if (_17) {
                if (e.pageX >= parseInt(_17.css("left"))) {
                    _12.addClass("menu-active");
                } else {
                    _18(_17);
                }
            } else {
                _12.removeClass("menu-active");
            }
        });
    };
    function _19(_1a) {
        var _1b = $.data(_1a, "menu").options;
        _18($(_1a));
        $(document).unbind(".menu");
        _1b.onHide.call(_1a);
        return false;
    };
    function _1c(_1d, pos) {
        var _1e = $.data(_1d, "menu").options;
        if (pos) {
            _1e.left = pos.left;
            _1e.top = pos.top;
            if (_1e.left + $(_1d).outerWidth() > $(window).width() + $(document).scrollLeft()) {
                _1e.left = $(window).width() + $(document).scrollLeft() - $(_1d).outerWidth() - 5;
            }
            if (_1e.top + $(_1d).outerHeight() > $(window).height() + $(document).scrollTop()) {
                _1e.top -= $(_1d).outerHeight();
            }
        }
        _1f($(_1d), { left: _1e.left, top: _1e.top }, function () {
            $(document).unbind(".menu").bind("mousedown.menu", function () {
                _19(_1d);
                $(document).unbind(".menu");
                return false;
            });
            _1e.onShow.call(_1d);
        });
    };
    function _1f(_20, pos, _21) {
        if (!_20) {
            return;
        }
        if (pos) {
            _20.css(pos);
        }
        _20.show(0, function () {
            if (!_20[0].shadow) {
                _20[0].shadow = $("<div class=\"menu-shadow\"></div>").insertAfter(_20);
            }
            _20[0].shadow.css({ display: "block", zIndex: $.fn.menu.defaults.zIndex++, left: _20.css("left"), top: _20.css("top"), width: _20.outerWidth(), height: _20.outerHeight() });
            _20.css("z-index", $.fn.menu.defaults.zIndex++);
            if (_21) {
                _21();
            }
        });
    };
    function _18(_22) {
        if (!_22) {
            return;
        }
        _23(_22);
        _22.find("div.menu-item").each(function () {
            if (this.submenu) {
                _18(this.submenu);
            }
            $(this).removeClass("menu-active");
        });
        function _23(m) {
            m.stop(true, true);
            if (m[0].shadow) {
                m[0].shadow.hide();
            }
            m.hide();
        };
    };
    function _24(_25, _26) {
        var _27 = null;
        var tmp = $("<div></div>");
        function _28(_29) {
            _29.children("div.menu-item").each(function () {
                var _2a = $(_25).menu("getItem", this);
                var s = tmp.empty().html(_2a.text).text();
                if (_26 == $.trim(s)) {
                    _27 = _2a;
                } else {
                    if (this.submenu && !_27) {
                        _28(this.submenu);
                    }
                }
            });
        };
        _28($(_25));
        tmp.remove();
        return _27;
    };
    function _2b(_2c, _2d, _2e) {
        var t = $(_2d);
        if (_2e) {
            t.addClass("menu-item-disabled");
            if (_2d.onclick) {
                _2d.onclick1 = _2d.onclick;
                _2d.onclick = null;
            }
        } else {
            t.removeClass("menu-item-disabled");
            if (_2d.onclick1) {
                _2d.onclick = _2d.onclick1;
                _2d.onclick1 = null;
            }
        }
    };
    function _2f(_30, _31) {
        var _32 = $(_30);
        if (_31.parent) {
            _32 = _31.parent.submenu;
        }
        var _33 = $("<div class=\"menu-item\"></div>").appendTo(_32);
        $("<div class=\"menu-text\"></div>").html(_31.text).appendTo(_33);
        if (_31.iconCls) {
            $("<div class=\"menu-icon\"></div>").addClass(_31.iconCls).appendTo(_33);
        }
        if (_31.id) {
            _33.attr("id", _31.id);
        }
        if (_31.href) {
            _33.attr("href", _31.href);
        }
        if (_31.onclick) {
            if (typeof _31.onclick == "string") {
                _33.attr("onclick", _31.onclick);
            } else {
                _33[0].onclick = eval(_31.onclick);
            }
        }
        if (_31.handler) {
            _33[0].onclick = eval(_31.handler);
        }
        _10(_30, _33);
    };
    function _34(_35, _36) {
        function _37(el) {
            if (el.submenu) {
                el.submenu.children("div.menu-item").each(function () {
                    _37(this);
                });
                var _38 = el.submenu[0].shadow;
                if (_38) {
                    _38.remove();
                }
                el.submenu.remove();
            }
            $(el).remove();
        };
        _37(_36);
    };
    function _39(_3a) {
        $(_3a).children("div.menu-item").each(function () {
            _34(_3a, this);
        });
        if (_3a.shadow) {
            _3a.shadow.remove();
        }
        $(_3a).remove();
    };
    $.fn.menu = function (_3b, _3c) {
        if (typeof _3b == "string") {
            return $.fn.menu.methods[_3b](this, _3c);
        }
        _3b = _3b || {};
        return this.each(function () {
            var _3d = $.data(this, "menu");
            if (_3d) {
                $.extend(_3d.options, _3b);
            } else {
                _3d = $.data(this, "menu", { options: $.extend({}, $.fn.menu.defaults, _3b) });
                _1(this);
            }
            $(this).css({ left: _3d.options.left, top: _3d.options.top });
        });
    };
    $.fn.menu.methods = { show: function (jq, pos) {
        return jq.each(function () {
            _1c(this, pos);
        });
    }, hide: function (jq) {
        return jq.each(function () {
            _19(this);
        });
    }, destroy: function (jq) {
        return jq.each(function () {
            _39(this);
        });
    }, setText: function (jq, _3e) {
        return jq.each(function () {
            $(_3e.target).children("div.menu-text").html(_3e.text);
        });
    }, setIcon: function (jq, _3f) {
        return jq.each(function () {
            var _40 = $(this).menu("getItem", _3f.target);
            if (_40.iconCls) {
                $(_40.target).children("div.menu-icon").removeClass(_40.iconCls).addClass(_3f.iconCls);
            } else {
                $("<div class=\"menu-icon\"></div>").addClass(_3f.iconCls).appendTo(_3f.target);
            }
        });
    }, getItem: function (jq, _41) {
        var _42 = { target: _41, id: $(_41).attr("id"), text: $.trim($(_41).children("div.menu-text").html()), disabled: $(_41).hasClass("menu-item-disabled"), href: $(_41).attr("href"), onclick: _41.onclick };
        var _43 = $(_41).children("div.menu-icon");
        if (_43.length) {
            var cc = [];
            var aa = _43.attr("class").split(" ");
            for (var i = 0; i < aa.length; i++) {
                if (aa[i] != "menu-icon") {
                    cc.push(aa[i]);
                }
            }
            _42.iconCls = cc.join(" ");
        }
        return _42;
    }, findItem: function (jq, _44) {
        return _24(jq[0], _44);
    }, appendItem: function (jq, _45) {
        return jq.each(function () {
            _2f(this, _45);
        });
    }, removeItem: function (jq, _46) {
        return jq.each(function () {
            _34(this, _46);
        });
    }, enableItem: function (jq, _47) {
        return jq.each(function () {
            _2b(this, _47, false);
        });
    }, disableItem: function (jq, _48) {
        return jq.each(function () {
            _2b(this, _48, true);
        });
    } 
    };
    $.fn.menu.defaults = { zIndex: 110000, left: 0, top: 0, onShow: function () {
    }, onHide: function () {
    }, onClick: function (_49) {
    } 
    };
})(jQuery);

